package compiler.scanner;

public class Token {
    
    private TokenType tokenType;
    private Object tokenData;
       
    public Token(TokenType type){
        this(type, null);
    }
     
    public Token(TokenType type, Object data){
        tokenType = type;
        tokenData = data;
    }

    public TokenType getType() {
        return tokenType;
    }

    public Object getData() {
        return tokenData;
    }

    public enum TokenType {
        INT_TOKEN, 
        IF_TOKEN, ELSE_TOKEN, 
        RETURN_TOKEN, VOID_TOKEN, 
        WHILE_TOKEN, PLUS_TOKEN, 
        MINUS_TOKEN, MULT_TOKEN, 
        DIV_TOKEN, LESS_TOKEN, 
        LESS_EQUAL_TOKEN, 
        GREATER_TOKEN, GREATER_EQUAL_TOKEN,
        EQUALS_TOKEN, NOT_EQUALS_TOKEN,
        ASSIGNMENT_TOKEN, SEMI_TOKEN,
        COMMA_TOKEN, L_PARA_TOKEN,
        R_PARA_TOKEN, L_BRACKET_TOKEN, R_BRACKET_TOKEN,
        L_BRACE_TOKEN, R_BRACE_TOKEN,
        ID_TOKEN, NUM_TOKEN,
        EOF_TOKEN, ERROR_TOKEN;
    }
}